This invention pertains to the arts of image detection and qualification in digital imaging and computer systems. In particular, this invention relates the arts of computer video driver hardware and firmware testing and qualification.
None.
Not applicable.
1. Field of the Invention
This invention relates to the arts of image detection, recognition, and qualification especially as applied to rasterized images such as those produced by computer displays and digital televisions. The invention is applicable to a range of workflow automation tasks in the field of computer video hardware and software testing, as well as possible applications involving the detection of images in video and digital still photographs for fields such as medical imaging, security, handwriting recognition and verification, and optical character recognition.
2. Description of the Related Art
Digital images are prevalent throughout everyday life, including the digital images displayed on computer screens, digital television broadcasts, digital still photography, document scanners, and even facsimile machines employ a form of digital imaging. In its simplest form, digital imaging is the process of converting an xe2x80x9canalogxe2x80x9d image, which consists of continuous features such as lines and areas of color, to a digitized encoding which represents the analog image. Typically, a scanning technique is used to create a rasterized image comprising rows and columns of pixels. Each pixel represents just one xe2x80x9cdotxe2x80x9d in the total image, and when viewed separately may not convey useful visual information to the human eye. However, when the entire field of pixels are viewed at an appropriate distance, a human observer can recognize the image as being that which was originally represented by the analog image.
Monochrome imaging simply uses pixels within a binary color palette, such as black and white. In monochrome imaging, the digital representation of an analog image typically consists of data values which represent an xe2x80x9conxe2x80x9d or xe2x80x9coffxe2x80x9d value for each pixel in the image. When the image is displayed on a computer terminal or printed on paper, the xe2x80x9conxe2x80x9d pixels may be represented by xe2x80x9cwhitexe2x80x9d dots, and the xe2x80x9coffxe2x80x9d pixels may be represented by xe2x80x9cblackxe2x80x9d dots. In a reverse video mode, the colors are swapped in the palette yielding an output which resembles an analog negative of the original analog image.
Color digital imaging techniques also typically employs a rasterized or xe2x80x9cpixelatedxe2x80x9d conversion from the analog image to a digital data set. In order to digitize the color value of each pixel, a color imaging device such as a scanner or digital camera will separate the image into 3 monochrome colors, most commonly red, blue and green. For each pixel, a color strength, or luminance, value is recorded for each of the primary separation colors. Thus, each pixel in the image is represented by a raster position, such as row and column values, and a set of red, green and blue (xe2x80x9cRGBxe2x80x9d) color strengths. When the image is to be output to a computer terminal, the three color guns of the cathode ray tube (xe2x80x9cCRTxe2x80x9d) are modulated to increase or decrease the strength of the dot produced in each color at each pixel location on the viewing screen. The result is an analog mixing of the three colors to provide a similar shade of color when viewed by the human eye. The overall image is interpreted by the viewing of the entire field of pixels as in monochrome image viewing. Other types of output technology use similar techniques to produce an analog mixing of the three output colors. For example, laptop computer displays typically use liquid crystal displays (xe2x80x9cLCDxe2x80x9d) which employ three colors of dots located very close together to represent a single pixel. The human eye does not see the individual color dots, but tends to see the larger pixel as a sum or mix of the three color dots. The driver hardware and firmware for the LCD panel will modulate each color dot in time to cause more or less energy of each color to be emitted over time, relying on the relatively slow response of the human retina to integrate or sum the energies in to what appears to be a shade of color. Digital printers such as ink jet printers and color laser printers use similar techniques by printing more or less ink in small dots very near each other for each pixel on paper, plastic, or some other printable media.
Computers are a special type of digital imaging system in which many of the images output or displayed are digitized analog images, such as photographs or movies, and many of the images are generated purely in the digital domain. The simplest example of such a purely digital image is a computer word processor which creates the image of a type written page or document without need to actually scan a real analog typewritten page. More advanced computer-generated images include computer graphics, animated images, and images produced as the result of mathematical operations on data representing non-visual information such as thermal imaging or X-ray scans.
FIG. 1 shows a common architecture used within computers to generate digital images. The system central processing unit (xe2x80x9cCPUxe2x80x9d) (1) is provided with a persistent data storage, such as a disk drive (2), and a disk drive interface (3) through which the CPU (1) can store and retrieve program code and data. The disk drive (2) may be of many types well known within the art, such as floppy disk, xe2x80x9cWinchesterxe2x80x9d hard drives or CD-ROM (compact disk read only memory). The disk drive interface may also be of many types well known within the art, such as IDE or SCSI.
The CPU is also provided with volatile system memory (4) such as random access memory (RAM), and a system memory interface (5) through which the CPU can store and retrieve program code and data. The system memory interface (5) is typically a local bus with very low latency and access times which increases the CPU""s operational capabilities or xe2x80x9cprocessing bandwidthxe2x80x9d.
The CPU (1) can retrieve program code for execution from the disk drive (2) or the system memory (4). Program code is commonly organized into several types of code. A set of basic input/output functions (14), or BIOS, allows the lowest level of access between the software on the CPU and the system hardware. BIOS function calls usually include operations such as read or set the system clock or read or write to a hardware peripheral. An operating system (13) (xe2x80x9cOSxe2x80x9d) such as IBM OS/2 usually executes above the BIOS, and provides system resource management, such as multitasking and memory management functions. A set of device drivers (12) is also typically provided, which are modules of program code specific to hardware peripherals such as system add-in cards. Finally, the application code (10) interfaces to the device drivers (12) and OS (13) through an application program interface (xe2x80x9cAPIxe2x80x9d) (11) to access system resources, such as the disk drive (2), system memory (4) and the system display (8).
The CPU (1) is also typically provided with an expansion system bus (6) which allows the addition of system peripherals as required by specific applications of the system. The system bus (6) may be one of many well-known computer busses such as peripheral component interconnect (xe2x80x9cPCIxe2x80x9d), micro-channel architecture bus (xe2x80x9cMCAxe2x80x9d), or industry standard architecture bus (xe2x80x9cISAxe2x80x9d), but may also be a proprietary bus. One common system peripheral is a video adapter card (7), which allows the system to be configured for various display device types, such as VGA CRT""s or LCD monitors, by the addition of a video adapter card which supports the specific display device (8) to be used.
In order to enhance the performance of the overall system, most video adapter cards (7) employ an on-board graphics accelerator (15), local video memory (16), and display control circuitry (17). In this arrangement, the CPU (1) is not required to calculate every individual pixel""s values for red, green and blue intensity, but rather can simply command the graphics accelerator to do the same. For example, the CPU (1) may command the graphics accelerator (15) via the system bus (6) to generate a circle of 50 pixels in diameter having a color of magenta. The graphics accelerator (15) then calculates the proper RGB values for each pixel on the display, and stores those data values in the local video memory (16). The display control circuitry (17) periodically reads the contents of the video memory (16), and modulates the signals to the system display (8) appropriately to create the pixels on the viewing screen.
The CPU may also directly access the video memory (16) via the system bus (6) in order to cause images which are already in a rasterized form to be displayed. This is necessary when the CPU needs to display scanned photographs or digitized movies, for example. In such a case, the CPU may store the RGB data for the image directly into the appropriate areas of video memory (16).
In most systems, the CPU can also read the video memory (16) contents and store those in system memory (4) or to the disk drive (2), for later retrieval and/or operation. This is common for operations such as xe2x80x9cprint screenxe2x80x9d.
During the configuration or manufacture of computer systems, video adapter cards from various manufacturers and display devices from various manufacturers may be easily incorporated and exchanged for similar models with similar specifications. However, because the algorithms employed in different graphics accelerators are not identical, their results to commands from the system CPU vary. As a computer manufacturer incorporates a different video adapter card into a computer system, the performance of the new video adapter card is typically verified by using test software to display test patterns on the system display. A human operator is then required to view the test patterns and to qualify them as acceptable or not acceptable based on clarity, color correctness, and overall image quality. As these are subjective values, the manufacturer will experience varying test results based on different test operators. The process is also very time consuming and adds to the manufacturing cost of the system. Therefore, there exists a need in the art for a system and method which can automate this process of validation of the image produced by the video adapter card in response to a set of commands by the CPU to display xe2x80x9creferencexe2x80x9d images.
Additionally, there are instances in the arts of imaging, such as medical imaging, when digitized images are displayed for a human operator to review thoroughly looking for particular patterns. For example, a digital image of a sonogram or CTI scan may be displayed for minutes to hours while a trained human operator looks for a pattern in the image, such as a bone break, a bullet, or the location of a catheter. If the computer system were provided with reference images of such features to be found, the computer could also search the image to assist the human operator in finding possible instances of the feature, thereby reducing the time to detect the feature and reducing the number of features missed.
Therefore, there exists a need in the art for a system and method which automates the detection and qualification of image features within rasterized or digital images based on known reference features to be found. There further exists a need in the art for this system and method to employ standard system architecture methods and features so as to be useful and applicable across many computer hardware platforms, operating systems, and imaging devices and technologies.
The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of a preferred embodiment of the invention, as illustrated in the accompanying drawings wherein like reference numbers represent like parts of the invention.
The system and method disclosed herein first performs a direct pixel-to-pixel comparison between the reference image and the image under analysis. Variations of color implementation in the image under analysis are allowed. If the direct pixel-to-pixel analysis does not yield a match for a particular pixel, a regional comparison of adjacent pixels is made to allow for variations on graphics representation. If enough matches are not found within the allowed region of pixels, the image is declared as not properly represented. Otherwise, in order for an image to be declared an accurate representation of the reference image, all pixels must have either a direct match or a regional match.
To enhance the usefulness of the method disclosed, the amount of allowable color variation and the size of the regional comparison is adjustable. To enable the system and method to be employed on an wide array of computer hardware platforms and operating systems, the system and method is implemented as an application program which accesses the video memory buffers of the video adapter.